Symbolic Execution and Model Checking for Testing

نویسندگان

  • Corina S. Pasareanu
  • Willem Visser
چکیده

Subsumption • Symbolic execution with subsumption checking – Not enough to ensure termination – An infinite number of symbolic states • Our solution – Abstraction • Store abstract versions of explored symbolic states • Subsumption checking to determine if an abstract state is re-visited • Decide if the search should continue or backtrack – Enables analysis of under-approximation of program behavior – Preserves errors to safety properties/ useful for testing • Automated support for two abstractions: – Shape abstraction for singly linked lists – Shape abstraction for arrays – Inspired by work on shape analysis (e.g. [TVLA]) • No refinement! Abstractions for Lists and Arraysions for Lists and Arrays • Shape abstraction for singly linked lists – Summarize contiguous list elements not pointed to by program variables into summary nodes – Valuation of a summary node • Union of valuations of summarized nodes – Subsumption checking between abstracted states • Same algorithm as subsumption checking for symbolic states • Treat summary node as an “ordinary” node • Abstraction for arrays – Represent array as a singly linked list – Abstraction similar to shape abstraction for linked lists Abstraction for Listsion for Lists E1 = V0 (E2 = V1 E2 = V2) E3 = V3 PC: V0 v V1 v V2 v Symbolic states Abstracted states

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

CUTE and jCUTE : Concolic Unit Testing and Explicit Path Model-Checking Tools (Tools Paper)

CUTE, a Concolic Unit Testing Engine for C and Java, is a tool to systematically and automatically test sequential C programs (including pointers) and concurrent Java programs. CUTE combines concrete and symbolic execution in a way that avoids redundant test cases as well as false warnings. The tool also introduces a race-flipping technique to efficiently test and model check concurrent program...

متن کامل

CUTE and jCUTE : Concolic Unit Testing and Explicit Path Model - Checking

CUTE, a Concolic Unit Testing Engine for C and Java, is a tool to systematically and automatically test sequential C programs (including pointers) and concurrent Java programs. CUTE combines concrete and symbolic execution in a way that avoids redundant test cases as well as false warnings. The tool also introduces a race-flipping technique to efficiently test and model check concurrent program...

متن کامل

Generalized Symbolic Execution for Model Checking and Testing

Modern software systems, which often are concurrent and manipulate complex data structures must be extremely reliable. We present a novel framework based on symbolic execution, for automated checking of such systems. We provide a two-fold generalization of traditional symbolic execution based approaches. First, we define a source to source translation to instrument a program, which enables stan...

متن کامل

Symbolic Execution and Constraint Solving

This report documents the program and the outcomes of Dagstuhl Seminar 14442 “Symbolic Execution and Constraint Solving”, whose main goals were to bring together leading researchers in the fields of symbolic execution and constraint solving, foster greater communication between these two communities and exchange ideas about new research directions in these fields. There has been a veritable rev...

متن کامل

Efficient Testing of Concurrent Programs with Abstraction-Guided Symbolic Execution

ion-Guided Symbolic Execution Neha Rungta, Eric G Mercer and Willem Visser∗ Dept. of Computer Science, Brigham Young University, Provo, UT 84602, USA ∗SEVEN Networks, 901 Marshall Street, Redwood City, CA 94063, USA Abstract. Exhaustive search techniques such as model checking and Exhaustive search techniques such as model checking and symbolic execution are insufficient to detect errors in con...

متن کامل

Towards Efficient Data-flow Test Data Generation

Data-flow testing (DFT) checks the correctness of variable definitions by observing their corresponding uses. It has been empirically proved to be more effective than control-flow testing in fault detection, however, its complexities still overwhelm the testers in practice. To tackle this problem, we introduce a hybrid testing framework: (1) The core of our framework is symbolic execution, enha...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2007